package cn.com.anypay.manager.lakala.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * 拉卡拉电子合同申请响应DTO
 *
 * @author Claude
 * @date 2024-01-15
 */
@Data
@Accessors(chain = true)
public class LakalaContractApplyResponse implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 返回码
     * 000000: 成功
     * 087900: 三四要素认证失败
     * 087901: 手机号实名认证不通过
     */
    @JsonProperty("code")
    private String code;

    /**
     * 返回码描述
     */
    @JsonProperty("message")
    private String message;

    /**
     * 返回码描述（兼容不同字段名）
     */
    @JsonProperty("msg")
    private String msg;

    /**
     * 结果信息集合
     */
    @JsonProperty("resp_data")
    private RespData respData;

    /**
     * 判断是否成功
     */
    public boolean isSuccess() {
        return "000000".equals(code);
    }

    /**
     * 获取消息（兼容message和msg字段）
     */
    public String getMessage() {
        return message != null ? message : msg;
    }

    /**
     * 响应数据内部类
     */
    @Data
    @Accessors(chain = true)
    public static class RespData implements Serializable {

        private static final long serialVersionUID = 1L;

        /**
         * 请求上送的订单号
         */
        @JsonProperty("order_no")
        private String orderNo;

        /**
         * 电子签约申请受理编号
         */
        @JsonProperty("ec_apply_id")
        private Long ecApplyId;

        /**
         * 电子签约申请结果H5链接地址
         * 申请成功时：待签约合同H5链接
         * 申请失败时：错误信息结果H5链接
         */
        @JsonProperty("result_url")
        private String resultUrl;
    }
}